/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pro.Servlet;

import pro.bean.*;
import pro.dao.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
//import net.tanesha.recaptcha.ReCaptchaImpl;
//import net.tanesha.recaptcha.ReCaptchaResponse;

/**
 *
 * @author Helmut
 */
public class Servlet extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        HttpSession sesion = request.getSession(true);

        try {
            String accionStr = (request.getParameter("accion") == null ? "1" : request.getParameter("accion"));
            int accion = Integer.parseInt(accionStr);

            usuario us = null;
            UsuarioDAO dus = new UsuarioDAO();
            Proyecto proyecto = null;


            String pagina = "";
            switch (accion) {
                case 1: //SIGUIENTE PAGINA

                    proyecto = new Proyecto();
                    request.setAttribute("proyecto", proyecto);
                    ArrayList<usuario> lista = new ArrayList<usuario>();
                    request.setAttribute("listaUsuarios", lista);//osea mostrar todos los usuarios

//                    String id_ = sesion.getAttribute("idusuario") == null ? "0" : (String)sesion.getAttribute("idusuario");
//                    int id = Integer.parseInt(id_);

                    ProyectoDAO proyectoDAO = new ProyectoDAO();
                    ArrayList<Proyecto> listaProyectos = null;

                    RolDAO rolDAO = new RolDAO();
                    ArrayList<Rol> listaRoles = rolDAO.listarRoles();
                    request.setAttribute("listaRoles", listaRoles);

                    us = new usuario();
                    String username = request.getParameter("vusername");
                    String password = request.getParameter("vpassword");
                    if (username.compareTo("") == 0
                            || password.compareTo("") == 0) {
                        pagina = "/Pagina_error2.jsp";
                        break;
                    } else {
                        us = dus.Data(username);
                        if (us.getApellido() != null) {

                            if (us.getPassword().compareTo(password) == 0) {
                                
                                sesion.setAttribute("idusuario", us.getIdusuario());
                                request.setAttribute("usuario", us);
                                listaProyectos = proyectoDAO.proyectosXUsuario(us.getIdusuario());
                                request.setAttribute("listaProyecto", listaProyectos);

                                pagina = "/PaginasUsuario/principal.jsp";
                                break;

                            } else {
                                pagina = "/Pagina_error2.jsp";
                                break;
                            }
                        } else {
                            pagina = "/Pagina_error2.jsp";
                            break;
                        }
                    }
                case 2:

                    String email = request.getParameter("vmail");
                    us = new usuario();
                    us = dus.DataMail(email);
                    String url = "http://localhost:8084/Contraseña.jsp";
                    String texto = "Para recuperar contraseña ingresar a la siguiente página:" + url + "";
                    dus.enviaMail(email, texto);
                    pagina = "/enviar_mail.jsp";
                    break;
                case 3:
                    String user = request.getParameter("vusername");
                    String pass = request.getParameter("vpassword");
                    String pass2 = request.getParameter("vpassword2");
                    usuario us2 = new usuario();
                    us2 = dus.Data(user);
                    if (us2 != null) {
                        if (pass.compareTo(pass2) == 0) {

                            String remoteAddr = request.getRemoteAddr();
//                            ReCaptchaImpl reCaptcha = new ReCaptchaImpl();
//                            reCaptcha.setPrivateKey("6LezeskSAAAAANbNCIlmdHKXxBC0PEiAhC_5enJo");

                            String challenge = request.getParameter("recaptcha_challenge_field");
                            String uresponse = request.getParameter("recaptcha_response_field");
//                            ReCaptchaResponse reCaptchaResponse = reCaptcha.checkAnswer(remoteAddr, challenge, uresponse);

//                            if (reCaptchaResponse.isValid()) {
//                                dus.actualizaPass(user, pass);
//                                pagina = "/CambioContraseña.jsp";
//                            } else {
//
//                                pagina = "/MalContraseña.jsp";
//                            }
                        } else {
                            pagina = "/MalContraseña.jsp";
                        }
                    } else {

                        pagina = "/MalContraseña.jsp";
                    }


                    break;


                default:
                    new UnsupportedOperationException("Operacion no definida");
            }
            RequestDispatcher rd = getServletContext().getRequestDispatcher(pagina);
            rd.forward(request, response);
        } catch (Exception ex) {
            ex.printStackTrace();

        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
